package com.ctshk.common.dto.payment;

import com.ctshk.common.enums.payment.PayCurrency;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;

/**
 * @BelongsProject: ctshk-cloud
 * @BelongsPackage: com.ctshk.rpc.payment.req
 * @Author: hef
 * @CreateTime: 2021-04-20 17:25
 * @Description: 描述
 */
@Data
@NoArgsConstructor
@AllArgsConstructor
@Accessors(chain = true)
public class CallPayDTO implements Serializable {
    private static final long serialVersionUID = 1L;

    /**
     * 订单号
     */
    @NotBlank(message = "订单号不能为空")
    private String orderNumber;
    /**
     * 支付主题(显示到客户支付界面的)
     */
    @NotBlank(message = "支付主题不能为空")
    private String subject;
    /**
     * 关于商品的详细说明。不支持特殊字符。
     */
    private String body;
    /**
     * 支付金额
     *
     */
    @NotNull(message = "支付金额不能为空")
    private BigDecimal totalFee;
    /**
     * 结算货币
     * 支付宝只支持HKD
     * 微信只支持HKD
     */
    private PayCurrency currency = PayCurrency.HKD;

    @NotNull(message = "销售人员id不能为空")
    @ApiModelProperty(value = "销售人员id")
    private Long salesmanId;

    /**
     * 订单有效时间
     */
    @NotNull(message = "订单有效时间不能为空")
    private LocalDateTime orderValidTime;

    /**
     * 通知地址 !!(需要带上路由前缀 通知URL会进行拼接 网关地址 + notifyUrl)
     * 支付平台回调支付结果到支付系统后 支付系统会通过这个接口通知到调用服务
     * 如果不传接口地址 则无法主动通知到对应的调用服务 需要调用方主动查询支付状态
     * 规定请求参数 NotifyConsumeReq.class
     * @see com.ctshk.common.req.pay.NotifyConsumeReq
     */
    private String notifyUrl;
}
